package main

func main()  {
	
}

type maxTreeNode struct {
	val int
	left *maxTreeNode
	right *maxTreeNode
}

type retmax struct {
	ret int
}
func calMaxlujing(root *maxTreeNode) {
	var s = &retmax{ret:0}
	s.getMax(root)
}

func (s *retmax) getMax(node *maxTreeNode) int {

	var l,r int
	if node.left != nil {
		l = max(s.getMax(node.left),0)
	}
	if node.right != nil {
		r = max(s.getMax(node.right),0)
	}
	s.ret = max(s.ret,l+r+node.val)
	return max(l,r) + node.val
}

func max(a,b int) int {
	if a > b {
		return a
	}
	return b
}
